package com.xm.proxy;

import java.lang.reflect.InvocationHandler;
import java.lang.reflect.Method;

public class MyInvocationHandler implements InvocationHandler {
    private final Object target;
    public MyInvocationHandler(Object target) {
        this.target = target;
    }

    /**
     * @param proxy 生成的代理对象
     * @param method 正在执行的方法
     * @param args 方法参数
     */
    @Override
    public Object invoke(Object proxy, Method method, Object[] args) throws Throwable {
        System.out.println("java 通过 接口反射 实现动态代理 method = " + method.getName());

        //前置增强处理
        MyUtil.before();
        Object res = method.invoke(target, args);
        //后置增强处理
        MyUtil.after();
        return res;
    }
}
